package model;

import java.util.ArrayList;

/**
 * This interface consists of the methods that could to be extended to implement different kind
 * of the players for the polarized ladder game.
 *
 */
public interface Player
{
    /**
     * Returns the next move the Player is going to make.
     * 
     * @param grid
     *            the grid describing the current game state.
     * @param playerPiece
     *            the player's gamePiece type
     * @return the next slot position on which to put the player's piece (ex :
     *         "H1", "B2").
     * @throws Exception if the Player can not determine next move.
     */
    public String getNextMove(ArrayList<ArrayList<GamePiece>> grid, GamePiece playerPiece) throws Exception;
    
    /**
     * Returns the Name of the player
     * 
     * @return
     */
    public String getName();
    
    /**
     * Executes when the opponent player just made a move
     * 
     * @param move the slot position on which the opponent player just put a piece on (ex :
     *         "H1", "B2").
     */
    public void OnOpponentPlayedMove(String move);
}
